/* 
 * File:   Indice_Primario.h
 * Author: jesus
 *
 * Created on 15 de junio de 2010, 12:53
 */

#ifndef _INDICE_PRIMARIO_H
#define	_INDICE_PRIMARIO_H

#include <iostream>


#include <map>
#include <vector>
#include <deque>
#include "Ficheros.h"
using namespace std;

class ErrorNoEncontrado{};

template<class Typo>
class Indice_Primario{
    map<Typo,long int> ind;
public:
    Indice_Primario();
    Indice_Primario(string fichIndx);
    void Cargar(string fichIndx);
    void Guardar(string fichIndx);
    void Escribir(Typo &elemento,long int pos);
    Typo & Buscar(const Typo &elemento);

};

template<class Typo> Indice_Primario<Typo>::Indice_Primario(){


}
template<class Typo> void Indice_Primario<Typo>::Cargar(string fich){
    vector<long int> posiciones;
    deque<Typo *> elementos;

    Ficheros<Typo> f(fich);
    elementos=f.Cargar(&posiciones);

    int i=0;
    for(i=0;i<elementos.size();i++){
        ind.insert(pair<Typo *,long int>(elementos[i],posiciones[i]));
    }
    


}
template<class Typo> void  Indice_Primario<Typo>::Guardar(string fich){
/*
   map<Typo,long int>::iterator it;

    Ficheros<Typo> f(fich);
    
    while(*it!=ind.end()){
        f.Guardar(*it);
        ++it;        
    }

*/
    
}
template<class Typo> void Indice_Primario<Typo>::Escribir(Typo& elemento, long int pos){
    //pair<map<Typo,long int>::iterator,bool> ret;

    ind.insert(pair<Typo &,long int>(elemento,pos));
}
template<class Typo> Typo & Indice_Primario<Typo>::Buscar(const Typo& elemento){
    //map<Typo,long int>::iterator it;
    ind.find(elemento);

    /*(it==ind.end();
        throw ErrorNoEncontrado();*/

    
}
#endif	/* _INDICE_PRIMARIO_H */

